Flink ResourceManager资源管理 您所在的位置:网站首页 flink jobmastername Flink ResourceManager资源管理

Flink ResourceManager资源管理

2023-03-24 01:33| 来源: 网络整理| 查看: 265

文章目录 一.基本概念 1.1 相关组件 1.2 逻辑层次 1.3 两层资源调度 二.机制与策略(Flink1.10) 2.1 TaskManager有哪些资源? 2.2 Slot有哪些资源? 2.3 TaskManager管理 2.4 Cluster -> Job 资源调度的过程 2.5 Job -> Task 资源调度的过程 2.6 资源调优 一.基本概念 1.1 相关组件

一个 Flink Cluster 是由一个 Flink Master 和多个 Task Manager 组成的,Flink Master 和 Task Manager 是进程级组件,其他的组件都是进程内的组件。

图片

一个FlinkMaster中有有一个ResourceManager中多个JobManager,Flink Master中每一个JobManager单独管理一个具体的Job,JobManager中的Scheduler组件负责调度执行该Job的DAG中所有Task,发出资源请求,即整个资源调度的起点;JobManager中Slot Pool组件持有该 Job 的所有资源。另外,FlinkMaster中唯一的ResourceManager负责整个 Flink Cluster 的资源调度以及与外部调度系统对接,这里的外部调度系统指的是 Kubernetes、Mesos、Yarn 等资源管理系统。

Task Manager 负责 Task 的执行,其中的 Slot 是 Task Manager 资源的一个子集,也是 Flink 资源管理的基本单位,Slot 的概念贯穿资源调度过程的始终。

1.2 逻辑层次

介绍完相关组件,我们需要了解一下这些组件之间的逻辑关系,共分如下为4层。

Operator 算子是最基本的数据处理单元 Task Flink Runtime 中真正去进行调度的最小单位 由一系列算子链式组合而成(chained operators)(Note:如果两个 Operator 属于同一个 Task,那么不会出现一个 Operator 已经开始运行另一个 Operator 还没被调度的情况。) Job 对应一个 Job Graph Flink Cluster 1 Flink Master + N Task Managers

图片

刚刚介绍的与资源调度相关的组件中,JobManager、Secheduler和SlotPool对应于Job级别,ResourceManager、SlotManager和TaskManager对应于FlinkCluster级别。

在 Operator 和 Task 中间的 Chaining 是指如何用 Operator 组成 Task 。在 Task 和 Job 之间的 Slot Sharing 是指多个 Task 如何共享一个 Slot 资源,这种情况不会发生在跨作业的情况中。在 Flink Cluster 和 Job 之间的 Slot Allocation 是指 Flink Cluster 中的 Slot 是怎样分配给不同的 Job 。

1.3 两层资源调度

Flink的资源调度是一个经典的两层模型,其中从Cluster到Job的分配过程是由SlotManager来完成,Job内部分配给Task资源过程则是由Scheduler来完成,Scheduler向SlotPool发出SlotRequest(资源请求),Slot Pool 如果不能满足该资源需求则会进一步请求 Resource Manager,具体来满足该请求的组件是 Slot Manager。

图片

二.机制与策略(Flink1.10) 2.1 TaskManager有哪些资源?

图片

资源类型

内存 CPU 其他拓展资源GPU

TM资源由配置决定

Standalone 部署模式下,TM 资源可能不同 其他部署模式下,所有 TM 资源均相同 2.2 Slot有哪些资源?

图片

TM有固定数量的 Slot 资源 Slot 数量由配置决定 Slot 资源由 TM 资源及 Slot 数量决定 同一 TM 上的 Slot 之间无差别

Slot计算管理

图片

2.3 TaskManager管理

Standalone部署模式

在 Standalone 部署模式下,Task Manager 的数量是固定的,如果是 start-cluster.sh 脚本来启动集群,可以通过修改以下文件中的配置来决定 TM 的数量;也可以通过手动执行 taskmanager.sh 脚本来启动一个 TM 。

/conf/slaves 复制代码

ActiveResourceManager部署模式

Kubernetes,Yarn,Mesos Slot 数量按需分配,根据 Slot Request 请求数量启动 TaskManager TaskManager 空闲一段时间后,超时释放 On-Yarn 部署模式不再支持固定数量的 TaskManager, 不再支持指定固定数量的 TM ,即以下命令参数已经失效。 yarn-session.sh -n flink run -yn 复制代码 2.4 Cluster -> Job 资源调度的过程

图片

红色箭头

Scheduler 向 Slot Pool 发送请求,如果 Slot 资源足够则直接分配,如果 Slot 资源不够,则由 Slot Pool 再向 Slot Manager发送请求(此时即为 Job 向 Cluster 请求资源),如果 Slot Manager 判断集群当中有足够的资源可以满足需求,那么就会向 Task Manager 发送 Assign 指令,Task Manager 就会提供 Slot 给 Slot Pool,Slot Pool 再去满足 Scheduler 的资源请求。

蓝色箭头

在 Active Resource Manager 资源部署模式下,当 Resource Manager 判定 Flink Cluster 中没有足够的资源去满足需求时,它会进一步去底层的资源调度系统请求资源,由调度系统把新的 Task Manager 启动起来,并且 TaskManager 向 Resource Manager 注册,则完成了新 Slot 的补充。

2.5 Job -> Task 资源调度的过程

Scheduler

根据 Execution Graph 和 Task 的执行状态,决定接下来要调度的 Task

发起 SlotRequest

Task + Slot -> Allocate TaskSlot

决定 Task / Slot 之间的分配

Slot Sharing

Slot Sharing Group 中的任务可共用Slot 默认所有节点在一个 Slot Sharing Group 中 一个 Slot 中相同任务只能有一个

优点

运行一个作业所需的 Slot 数量为最大并发数 相对负载均衡

图片

Slot Sharing 过程(每一行分别是一个 task 的多个并发,自下而上分别是 A、B、C),A、B、C 的并行度分别是4、4、3,这些 Task 属于同一个 Slot Sharing Group 中,所以不同的 Task 可以放在相同的 Slot 中运行,如图7右侧所示,有3个 Slot 放入了 ABC,而第四个 Slot 放入了 AB 。通过以上过程我们可以很容易推算出这个 Job 需要的 Slot 数是4,也是最大并发数。

2.6 资源调优

通过以上介绍的机制,我们容易发现,Flink 所采用的是自顶向下的资源管理,我们所配置的是 Job 整体的资源,而 Flink 通过 Slot Sharing 机制控制 Slot 的数量和负载均衡,通过调整 Task Manager / Slot 的资源,以适应一个 Slot Sharing Group 的资源需求。Flink 的资源管理配置简单,易用性强,适合拓扑结构简单或规模较小的作业。

参考

cloud.tencent.com/developer/n…



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有